package com.xiaoming.e3mall.controller;

import com.xiaoming.e3mall.common.utils.FastDFSClient;
import com.xiaoming.e3mall.common.utils.JsonUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.util.HashMap;
import java.util.Map;

/**
 * 图片上传的Contorller
 */

@Controller
public class PictureController {

    @Value("${IMAGE_SERVER_URL}")
    private String IMAGE_SERVER_URL;


    //指定text-plain的编码格式是utf8
    @RequestMapping(value="/pic/upload", produces= MediaType.TEXT_PLAIN_VALUE+";charset=utf-8")
    @ResponseBody
    public String uploadFile(MultipartFile uploadFile){

        /**
         * 这里处理了富文本编辑框的浏览器兼容问题,当ResposeBody返回的一个String这样
         * 注解就不会将String转换成json 那么响应给浏览器的Content-type就是 text/plain
         * 跟application/json一样都能传递json数据但是有些区别
         * 这里主要是解决富文本编辑框的浏览器兼容问题
         */

        try {
            //把图片上传的图片服务器  //
            FastDFSClient fastDFSClient = new FastDFSClient("classpath:config/client.conf");
            //取文件扩展名
            String originalFilename = uploadFile.getOriginalFilename();
            String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
            //得到一个图片的地址和文件名
            String url = fastDFSClient.uploadFile(uploadFile.getBytes(), extName);
            //补充为完整的url
            url = IMAGE_SERVER_URL + url;
            //封装到map中返回
            Map result = new HashMap<>();
            result.put("error", 0);
            result.put("url", url);
            return JsonUtils.objectToJson(result);
        } catch (Exception e) {
            e.printStackTrace();
            Map result = new HashMap<>();
            result.put("error", 1);
            result.put("message", "图片上传失败");
            return JsonUtils.objectToJson(result);
        }
    }


}
